import React from "react"
import { IFileBase, IPagingBase, IPagingSumBase, ISearchBase, IQuestionBase, IFileHelperMessageBase } from "./common"
import { BaseOptionType, DefaultOptionType } from "antd/lib/select"

/**
 * @description 文件信息
 */
export interface IFileModel extends IFileBase {
  /**
   * 备注关键字
   */
  key_word?: string
  /**
   * 文件名称不带后缀名
   */
  file_name: string
  /**
   * 完整的文件名称
   */
  file_fullname: string
  /**
   * 文件后缀名
   */
  file_extension?: string
  /**
   * 文件类型
   */
  file_type?: string
  /**
   * 文件路径
   */
  root_path?: string
  /**
   * 文件完整路径
   */
  file_path?: string
  /**
   * 创建人
   */
  create_by?: string
  /**
   * 创建时间
   */
  create_at?: string
  /**
   * 更新人
   */
  update_by?: string
  /**
   * 更新时间
   */
  update_at?: string
  /**
   * 是否收藏
   */
  is_favorite?: string
  /**
   * 是否分享
   */
  is_share?: string
  /**
   * 分享链接
   */
  share_url?: string
  /**
   * 分享人
   */
  share_by?: string
  /**
   * 文件大小
   */
  file_size?: string
  /**
   * 文件地址
   */
  file_url?: string
  is_rename?: boolean
  childrens?: IFileModel[]
  /**
  * 文档存储类型（1:个人目录 ，2：企业目录）
  */
  store_type?: string
  /**
   * 消息内容
   */
  content?: string
  /**
   * 未读数量
   */
  no_read_count?: number
  /**
   * 升序/降序
   */
  order_date?: string
  /**
   * 文件快照
   */
  high_light_list?: string[]
  /**
   * 文档变更id
   */
  changed_id?: React.Key
  /**
   * 文档变更人头像
   */
  avatar_url?: string
  /**
   * 文档变更的版本名称
   */
  version_name?: string
  /**
   * 文件是否被置顶
   */
  is_topping?: string
  /**
   * 消息创建者
   */
  msg_create_id?: string
  /**
   * 文答-相关性
   */
  score?: string
  /**
   * 文答-数据来源-是否展开
   */
  is_expand?: boolean
  /**
   * 缩略图url
   */
  thumbnail_url?: string
  /**
   * 管理权限 1是0否
   */
  manage_state?: string
  /**
  * 待办工作的计算数量： 0 | 1 | -1
  */
  calculate_count?: number
}
/**
 * @description 文件模型
 */
export interface ITreeNode<T> {
  id?: React.Key
  /**
   * 节点层级
   */
  level?: number
  /**
   * 点击是否展开
   */
  expand?: boolean
  /**
   * 子节点
   */
  childrens?: ITreeNode<T>[]
  /**
   * 节点信息
   */
  extra: T
  /**
   * 是否高亮
   */
  actived?: boolean
  /**
   * 是否选中
   */
  checked?: boolean
  /**
   * 单选/多选
   */
  rowselection?: 'checkbox' | 'radio'
  /**
   * node节点/分组标题
   */
  type?: 'group' | 'node'
  /**
   * 分组标题的值
   */
  groupvalue?: string
}
/**
 * @description 新建文件的参数
 */
export interface IAddFileParams {
  /**
   * 创建文件类型（0：文件夹，1：上传文件，2：表格，3：表格模板，4:文档，5:文档模板，6:文件附件，7:html_url转md文件（网页链接））
   */
  type: string
  file_name: string
  /**
   * 网页链接地址
   */
  html_url?: string
}
/**
 * @description 根据文件夹id查询企业和个人目录树信息的参数
 */
export interface IMyOrEnterpriseFileParams extends IFileBase, IPagingBase {
  query_param?: string
}
/**
 * @description 企业和个人目录树信息
 */
export interface IMyOrEnterpriseFileModel {
  file_list: ITreeNode<IFileModel>[]
  pending_list?: IPendingInfo[]
  query_param: {
    sort_type: string
  }
  /**
   * 当前文件夹的目录路径
   */
  full_path_list: ITreeNode<IFileModel>[]
  /**
   * 默认打开文件
   */
  default_open_ids: string[]
}
/**
 * @description 查询文件权限或者共享信息的参数
 */
export interface IPrivilegeDetailParams extends IFileBase {
  folder_name?: string
}
/**
 * @description 文件权限或者共享列表
 */
export interface IPrivilegeInfo {
  /**
   * 权限类型（D：部门，U：人员，R：角色）
   */
  type: string
  id?: React.Key//具体部门/角色/人员id
  name: string//具体部门/角色/人员名称
  /**
   * 权限状态（0：所有者，1：可编辑，2:可管理，3：仅查看）
   */
  state: React.Key
  /**
   * 该权限类型拥有的人员数量
   */
  count?: string
  role_id?: string
  avatar_url?: string
  privilege_id?: string
  is_root?: boolean
}
export interface IPrivilegeUserInfo {
  user_id: string
  user_name: string
  user_avatar: string
}
/**
 * @description 文件权限/共享信息
 */
export interface IPrivilegeDetailModel {
  privilege_list: IPrivilegeInfo[]
  /**
   * 文件/文件夹名称不带后缀名
   */
  file_name: string
  /**
  * 文件/文件夹名称带上后缀名
  */
  file_fullname: string
  /**
   * 文件类型
   */
  file_type: string
  /**
   * 权限继承提示文案
   */
  comment_of_privilege: string
  /**
  * 还原权限提示文案
  */
  comment_of_restore: string
  /**
   * 是否显示“还原权限”按钮（0：不显示，1：显示）
   */
  is_can_restore: string
  /**
   * 共享文件夹id（多文件时）
   */
  folder_id?: React.Key
  url: string
  /**
  * 有效期（0:无限期，1:7天，2：30天）
  */
  validity_date_type: string
}
/**
 * @description 修改人员、角色、组织对文件的权限的参数
 */
export interface IEditPrivilegeDetailParams extends IFileBase {
  privilege_list?: string
  /**
   * 有效期（0:无限期，1:7天，2：30天）
   */
  validity_date_type?: React.Key
}
/**
 * @description 修改某文件的一条具体权限详情的权限的参数
 */
export interface IEditSinglePrivilegeDetailParams {
  /**
   * 权限id
   */
  privilege_id: React.Key
  /**
   * (无传参代表删除,0:所有者,1:可编辑,2:可管理,3:仅查看)
   */
  state: React.Key
}

/**
 * @description 对文件打开或者关闭共享权限的参数、修改置顶状态参数
 */
export interface IEditPrivilegeToppingStateParams extends IFileBase {
  /**
   * 分享状态（0：未分享，1：已分享）
   */
  state: React.Key
}
/**
 * @description 搜素人员列表的参数
 */
export interface ISearchUserParams extends ISearchBase {

}
/**
 * @description 查询角色部门列表的参数
 */
export interface IDepartmentRoleParams extends ISearchBase {

}
/**
 * @description 人员信息
 */
export interface IDepartmentUser {
  name: string
  user_nickname: string
  phonenumber: string
  department_name: string
  user_avatar: string
  id: React.Key
  position: string
  /**
   * 权限类型（D：部门，U：人员，R：角色）
   */
  type: string
}
/**
 * @description 搜素人员列表返回结果
 */
export interface ISearchUserModel {
  result_list: IDepartmentUser[]
}
/**
 * @description 角色信息
 */
export interface IRoleInfo {
  name: string
  id: React.Key
  count: string
  /**
   * 权限类型（D：部门，U：人员，R：角色）
   */
  type: string
  /**
   * 选中状态（0：未选中，1：半选中，2:全选中）
   */
  checkStatus?: number
  /**
   * 是否选中
   */
  checked?: boolean
  /**
   * 是否禁用
   */
  disabled?: boolean
  childrens?: IRoleInfo[]
  /**
   * 本部门的儿子中是否有该角色（如：有一个儿子是一个人员，且具有该角色）
   */
  is_have?: string
  /**
   * 本部门的具有该角色的儿子是否也被选中
   */
  is_have_checked?: boolean
  root_id?: string
  parent_id?: string
  parent?: IRoleInfo
  is_root?: boolean
  /**
 * 权限状态（0：所有者，1：可编辑，2:可管理，3：仅查看）
 */
  state?: React.Key
}
export enum DepartmentUserType {
  /**
   * 部门
   */
  D = "D",
  /**
   * 人员
   */
  U = "U",
  /**
   * 角色
   */
  R = "R",
}
/**
 * @description 查询角色列表返回的数据
 */
export interface IRoleListModel {
  result_list: IRoleInfo[]
}
/**
 * @description 查询部门列表的参数
 */
export interface IDepartmentListParams {
  role_id?: React.Key
  department_id?: React.Key
}
/**
 * 组织架构列表
 */
export interface IDepartmentInfo {
  id: React.Key
  user_nickname?: string
  name: string
  user_avatar?: string
  count: string
  /**
   * 职位
   */
  position?: string
  /**
   * 本部门下是否包含相应角色（1：包含）
   */
  is_have?: string
  is_have_checked?: boolean
  /**
   * 是否选中
   */
  checked?: boolean
  /**
   * 是否禁用
   */
  disabled?: boolean
  /**
   * 权限类型（D：部门，U：人员，R：角色）
   */
  type: string
  childrens?: IDepartmentInfo[]
  root_id?: string
  parent_id?: string
}
/**
 * 查询组织架构返回的数据
 */
export interface IDepartmentUserModel {
  result_list: IDepartmentInfo[]
}
/**
 * @description 查询文件列表的参数
 */
export interface ISearchFileParams extends ISearchBase, IPagingBase {
  /**
   * 查询范围（0：所有类型，1：文件名，2：正文，3：关键字）
   */
  search_type?: string
  /**
   * 查询文件类型（0：不限类型，1：文档，2：表格）
   */
  file_type?: string
  /**
   * 文件位置（0：全部位置，1：个人目录，2：企业目录，3：共享文件，4：回收站）
   */
  file_position?: string
  /**
   * 时间查询类型（0：不限时间，1：最近7天，2：最近一月，3：最近二月，4：最近三月，5：自定义时间）
   */
  time_range_type?: string
  /**
   * 开始时间+结束时间  time_type 创建时间或更新时间
   */
  time_range?: string
  /**
   * 智能语义,是否为ai查询（0：否，1：是）
   */
  is_ai_search: string
}
/**
 * @description 查询到的文件列表
 */
export interface ISearchFileModel extends IPagingSumBase {
  result_list: ITreeNode<IFileModel>[]
}
/**
 * @description 查询共享文档树（发出、收到)的参数
 */
export interface IShareFileParams {
  type: React.Key //（0：发出，1：收到）
}
/**
 * @description 查询到的共享文档树（发出、收到)
 */
export interface IShareFileModel {
  file_list: ITreeNode<IFileModel>[]
}
/**
 * @description 修改文件信息(名称、备注)的参数
 */
export interface IEditFileParams extends IFileBase {
  keyword?: string
  file_name?: string
}
/**
 * @description 待处理文件信息
 */
export interface IPendingInfo extends IFileBase {
  file_type: string
  file_name: string
  msg_receive_time: string
  file_url: string
  file_extension: string
  file_fullname: string
}
/**
 * @description 首页最近文件返回的数据
 */
export interface IRecentlyFilesModel {
  pending_list: IPendingInfo[]
  file_list: ITreeNode<IFileModel>[]
}
/**
 * @description 查询文件信息接口需要的参数
 */
export interface IFilesDetailParams extends IFileBase {
  changed_id?: React.Key
  share_code?: React.Key
  /**
   * （0：否，1：是）---控制是否返回未读的@我消息数量和任务待办数量
   */
  open_sidebar?: string
}
/**
 * @description 查询文件详情接口返回的数据
 */
export interface IFilesDetailModel {
  create_by: string
  update_by?: string
  update_time: string
  create_time: string
  file_size?: string
  file_type: string
  file_name: string
  file_fullname: string
  file_path: string
  key_word?: string
  file_extension?: string
  /**
   * 权限列表
   */
  privilege_list?: IPrivilegeInfo[]
  /**
   * 文件助手'@'人员列表
   */
  privilege_user_list?: IPrivilegeUserInfo[]
  /**
   * 是否开放权限共享（0：否，1：是）
   */
  is_share?: string
  /**
  * 文件地址
  */
  file_url?: string
  /**
   * 评论计数
   */
  comment_count: string
  /**
   * 收藏计数
   */
  favorite_count: string
  /**
   * 是否收藏（0：未收藏，1：已收藏）
   */
  is_favorite: string
  /**
   * 文档存储类型（1:个人目录 ，2：企业目录）
   */
  store_type: string
  /**
   * 是否有编辑权限 0不可  1可编辑  
   */
  edit_state?: string
  /**
   * 是否能修改权限分配 0否 1是
   */
  manage_state?: string
  /**
   * 文件能否编辑（子表默认能否编辑） 0否 1是
   */
  template_is_can_edit?: string
  /**
   * onlyoffice版本号字段
   */
  version_key?: string
  /**
   * 父级id
   */
  parent_id?: string
  /**
   * 编辑首选项
   */
  edit_sequence?: string
  file_version?: string
  /**
   * 知识库id
   */
  base_id?: string
  /**
   * 知识库名称
   */
  base_name?: string
  file_helper_msg_count?: number
  /**
   * 筛选方案列表
   */
  doc_query_plan_list?: BaseOptionType[]
  /**
   * 未读的@我消息数量
   */
  file_helper_mention_msg_count?: number
  /**
   * 任务待办数量
   */
  pending_task_count?: number
}
/**
 * @description 首页收藏文件列表接口的参数
 */
export interface IFavoriteFilesParams extends IFileBase, IPagingBase {
  /**
   * 枚举：0(全部),1(最近一周),2(最近一个月),3(最近半年)
   */
  datetimetype: number
}
/**
 * @description 首页收藏文件列表接口返回的数据
 */
export interface IFavoriteFilesModel {
  file_list: ITreeNode<IFileModel>[]
  full_path_list: ITreeNode<IFileModel>[]
}
/**
 * @description 更新文件收藏状态需要的参数
 */
export interface IEditFavoriteParams extends IFileBase {
  /**
   * 收藏状态（0：未收藏，1：已收藏）
   */
  favorite_state: number
}
/**
 * @description 提交文档变动接口（移动、复制、删除)需要的参数
 */
export interface IEditFilePathParams extends IFileBase {
  /**
   * 操作类型（0：删除，1：复制，2：移动）
   */
  opreate_type: string
  parent_id?: React.Key//移动到的父文件夹位置id
}
/** 
 * @description 获取评论列表参数
*/
export interface IFileCommentsParams extends IFileBase, IPagingBase {

}
/**
 * @description 评论信息
 */
export interface ICommentInfo {
  content: string
  comment_id: React.Key
  comment_create_by: string
  avatar: string
  /**
   * 是否点赞（0：否，1：是）
   */
  is_liked: string
  liked_count: string
  comment_update_at: string
}
/**
 * @description 评论列表接口返回的数据
 */
export interface IFileCommentsModel {
  comment_list: ICommentInfo[]
  count: string
}
/** 
 * @description 添加评论参数
 */
export interface IAddCommentParams extends IFileBase {
  content: string
}
/** 
 * @description 评论点赞参数
 */
export interface ILikeCommentParams extends IFileBase {
  comment_id: React.Key
  /**
   * （0：取消点赞，1：添加点赞）
   */
  state: string
}
/**
 * @description 通知中心数据
 */
export interface INoticeInfo extends IFileBase {
  file_type: string
  file_name: string
  comment: string
  /**
   * 是否已读  1是0否
   */
  is_read: string
  file_url: string,
  file_extension: string
  file_fullname: string
}
/**
 * @description 通知中心列表
 */
export interface INoticeList {
  time_type: string
  list: INoticeInfo[]
}
/**
 * @description 查询通知中心列表返回的数据
 */
export interface INoticeModel {
  file_list: INoticeList[]
  noread_account: number//未读信息数量
  total_account: number//所有信息数量
}
/**
 * @description 通知中心状态更新的参数
 */
export interface IEditNoticeParams extends IFileBase {

}
/**
 * @description 还原回收站文件需要的参数
 */
export interface IRestoreFilesParams extends IFileBase {

}
/**
 * @description 回收站文件信息
 */
export interface IRecycleInfo extends IFileBase {
  file_name: string
  file_fullname: string
  delete_date: string
  file_size: string
  file_type: string
  validity_period: string
  file_extension?: string
}
/**
 * @description 查询回收站列表返回的数据
 */
export interface IRecycleModel {
  file_list: IRecycleInfo[]
}

/**
 * @description 删除回收站文件接口需要得到参数
 */
export interface IDeleteRecycleFileParams extends IFileBase {

}
/**
 * 获取消息列表参数
 */
export interface IMessageFileListParams extends IPagingBase {
  /**
   * (0：所有，1：未读，2：@我的消息)
   */
  type?: string | number
}
/**
 * 获取待办工作列表参数
 */
export interface IWorkFlowFileListParams extends IPagingBase {
  /**
   * (0：所有，1：待办，2：已办)
   */
  type?: string | number
}
/**
 * 根据file_attribute_meta_id获取其下拉选择值参数
 */
export interface IAttributeMetaItemParams {
  meta_id: string
  /**
   * 上一级选择内容
   */
  parent_select_value?: string
}
/**
 * 根据file_attribute_meta_id获取其下拉选择值模型
 */
export interface IAttributeMetaItemModel {
  select_item: DefaultOptionType[]
}
/**
 * @description 初始化消息列表返回的数据
 */
export interface IMessageFilesModel {
  file_list: ITreeNode<IFileModel>[]
}
/**
 * @description 初始化待办工作列表返回的数据
 */
export interface IWorkFlowTaskFilesModel {
  task_list: ITreeNode<IFileModel>[]
}
/**
 * @description 文件助手中聊天框消息列表返回的数据
 */
export interface IFileHelperMessageModel {
  msg_list: IFileHelperMessageInfo[]
}
/**
 * 文件助手中聊天框消息列表信息
 */
export interface IFileHelperMessageInfo extends IFileBase, IFileHelperMessageBase {
  content: string
  sender_name: string
  create_at: string
  avatar_url: string
  create_id: string
  /**
   * 升序/降序
   */
  order_date: string
  /**
   * 消息的菜单是否被处理过，0默认没有处理过 1处理过
   */
  is_handle?: number
  /**
   * 消息类型
   */
  message_type?: string
  /**
   * 是否@我（0：否，1：是）
   */
  mention_me?: string
}
/**
 * 消息菜单类型
 */
export interface IFileHelperMessageMenuInfo {
  action: string,
  id: number
  title: string
  toolName: string
  extend_info: string
}
/**
 * 消息头类型
 */
export interface IFileHelperMessageHeaderInfo {
  /**
   * 引用的消息内容
   */
  source_message_content?: string
  /**
   * 引用的消息发送人名
   */
  source_real_name?: string
  /**
   * 状态图标
   */
  icon?: string
}
/**
 * 文档助手消息菜单命令
 */
export enum IFileHelperMessageActionType {
  /**
   * 选择审批人
   */
  SelectApprovePersion = "select_approve_persion",
  /**
   * 同意
   */
  ApproveAgree = "approve_agree",
  /**
   * 不同意
   */
  ApproveNotAgree = "approve_not_agree",
}
/**
 * 文档助手执行消息菜单参数
 */
export interface IFileHelperMessageMenuActionParams extends IFileBase {
  tool_name: string
  action_name: string
  input: string
  original_user_id: string
  menu_extend_info: string
}
/**
 * 消息审批结果类型
 */
export interface IFileHelperMessageApprovalResultInfo {
  col1: string,
  col2: string
  col2_color: string
}
/**
 * mqtt返回的消息数据
 */
export interface IMQTTMessageModel {
  message_json: IFileModel
  file_helper_json: IFileHelperMessageInfo
  serial_number: number
  topic: string
}
/**
 * 消息确认收到参数
 */
export interface ImessageCallbackParams {
  topic: string
  payload: string
}

/**
 * 获取文档版本历史参数
 */
export interface IChangedHistoryParams extends IPagingBase, IFileBase {

}
/**
 * 还原文档版本历史参数
 */
export interface IRestoreHistoryParams {
  changed_id: React.Key
}
export interface IChangedHistoryModel {
  changed_list: ITreeNode<IFileModel>[]
  file_detail: IFilesDetailModel
}
/**
 * 新增批注参数
 */
export interface IAddAnnotationsParams extends IGetAnnotationsParams {
  json_content: string
  mask: string
  comment: string
}
/**
 * 获取文件批注参数
 */
export interface IGetAnnotationsParams extends IFileBase {
  file_version: string
}
/**
 * 查询转化后的文件是否可以预览(pptx转PDF、TXT转emd)
 */
export interface IFileViewStateModel {
  /**
   * （-1：文件不存在，0：可以预览，1：转化中）
   */
  view_state: string
}

/**
 * 文件分享信息
 */
export interface IFileShareInfo extends Partial<IFileBase> {
  /**
   * 是否加密（0：否，1：是）
   */
  is_encrypted?: string
  /**
   * 密码
   */
  secret?: string
  share_url?: string
  share_code?: string
  /**
   * 是否分享给外部人员
   */
  need_login?: string
  /**
   * 有效期1/7/30天
   */
  validity_period?: string
  share_id?: string
}
/**
 * 所有分享链接数据模型
 */
export interface IShareUrlListModel {
  url_list: BaseOptionType[]
}


//**************************************************问答相关************************************************* */
/**
 * 创建提问参数
 */
export interface IAscQuestionParams extends IQuestionBase {
  question: string
  /**
   * 前端答案loading临时id
   */
  temp_id: string
  /**
   * 所选知识库
  */
  kb_ids: string
  stream: string
  [key: string]: string
}
/**
 * 问答会话类型
 */
export interface ISessionType {
  create_at: string
  id: string
  question_count: number
  summary?: string
}
/**
 * 会话列表数据
 */
export interface ISessionsModel {
  result_list: ISessionType[]
}
/**
 * 问题答案类型
 */
export interface IQuestionType {
  id: string
  content: string
  avatar_url: string
  position: string
  index: number
  loading?: boolean
  temp_id?: string
  /**
   * 相关性和数据来源
   */
  source_documents?: IFileModel[]
}
/**
 * 问题答案列表数据
 */
export interface IQuestionsModel {
  result_list: IQuestionType[]
}

/**
 * 问题答案数据
 */
export interface IAnswerModel {
  id: string
  answer: string
  uuid?: string
  /**
   * 相关性和数据来源
   */
  source_documents?: string
}
/**
 * @description 获取当前文件夹及其子文件夹下所有图片的参数
 */
export interface ImageFileListParams extends IFileBase, IPagingBase {
  query_param?: string
}
/**
 * @description 获取当前文件夹及其子文件夹下所有图片的模型
 */
export interface ImageFileListModel {
  file_list: ITreeNode<IFileModel>[]
  file_path: string
}
/**
 * 文档助手是否启动返回数据
 */
export interface IHeartBeatStatusModel {
  /**
   * 文档助手是否启动信息
   */
  status: string
  /**
   * 磁盘异常信息
   */
  disk_status: string
}
/**
 * 表单快捷方式信息
 */
export interface IFrmShortcutInfo {
  id?: string
  template_id?: string
  shortcut_name?: string
}

/**
 * 获取表单快捷方式模型
 */
export interface IFrmShortcutModel {
  shortcut_list: IFrmShortcutInfo[]
}

/**
 * 查询方案信息
 */
export interface IQueryPlanInfo extends IFileBase {
  plan_id?: string
  query_param?: string
  plan_name?: string
}
/**
 * 文件夹显示目录信息
 */
export interface IColumnInfo extends DefaultOptionType {
  is_default: string
  order_sort: number
}
/**
 * 文件夹显示设置模型
 */
export interface IFolderDisplaySetModel {
  /**
   * （0：显示本级目录，1：显示本级目录和文件，2：显示所有目录的文件）
   */
  display_method: string
  full_list: IColumnInfo[]
  selected_list: IColumnInfo[]
  /**
   * 隐藏文件路径和扩展名（0：否，1：是）
   */
  name_simple_display: string
  /**
   * 默认打开文件的名称
   */
  default_open_filename: string
  /**
   * 是否可还原（0：否，1：是）
   */
  is_can_restore: string
  /**
   * 点击还原时提示文案
   */
  restore_comment: string
  /**
   * 继承提示文案
   */
  inherit_comment: string
  /**
   * 分组字段
   */
  group_field_value: string
  /**
   * 展现样式（0：列表，1：卡片，2：数表，3：甘特图）
   */
  display_style: string
  /**
   * 起始日期字段
   */
  start_date: string
  /**
   * 终止日期字段
   */
  end_date: string
}
/**
 * 保存文件夹显示设置参数
 */
export interface IFolderDisplaySetParams extends IFileBase, IFolderDisplaySetModel {
  /**
   * 显示列的list
   */
  column_list: string
}
/**
 * 设置工作流参数
 */
export interface IWorkFlowSetParams extends IFileBase {
  name?: string
  workflow_type?: string
  workflow_field?: string
  wfs_id?: string
  /**
   * get_setting接口返回的设置主id
   */
  wfs_main_id?: string
  /**
   * 是否强制删除（0：否，1：是）
   */
  is_force?: string
  /**
   * 流程字段结果
   */
  target_result?: string
}
/**
 * 流程字段结果 
 */
export interface IWorkFlowTargetResultInfo {
  workflow_field: string
  workflow_field_result: string
}
/**
 * 获取工作流设置模型
 */
export interface IWorkFlowSetModel {
  wfs_main_id: string
  /**
   * workflow_type 0会签，1指派
   */
  wfslist: BaseOptionType[]
}
/**
 * 工作流程字段模型
 */
export interface IWorkFlowFieldModel {
  selected_list: IColumnInfo[]
}
/**
 * 获取工作流实例模型
 */
export interface IWorkFlowInstanceModel {
  id: string
  name: string
  workflow_type: string
  workflow_type_name: string
  workflow_field: string
  workflow_field_name: string
  task_list: IWorkFlowTaskListModel[]
  current_task: ICurrentTaskInfo
}
/**
 * 当前工作流任务信息
 */
export interface ICurrentTaskInfo {
  /**
   * 当前任务id
   */
  current_task_id: string
  current_task_title: string
  /**
   * 当前任务申请说明
   */
  current_task_opinion: string
  /**
   * 任务来源人员名称
   */
  task_from_user: string
  /**
   * 任务状态 0：未完成，1：完成
   */
  task_state: string
}
/**
 * 工作流人员处理流程模型
 */
export interface IWorkFlowTaskListModel {
  sort: string
  task_list: IWorkFlowTaskInfo[]
}
/**
 * 工作流人员处理流程信息
 */
export interface IWorkFlowTaskInfo {
  task_id: string
  /**
   * 处理动作  同意或者拒绝
   */
  pass_state_name: string
  date: string
  /**
   * 意见
   */
  opinion: string
  user_name: string
  user_avatar: string
  title: string
  /**
   * 处理意见JSON串
   */
  opinion_detail?: string
}
/**
 * 执行工作流提交参数
 */
export interface InvokeWorkFlowParams extends IFileBase {
  task_id: string
  /**
   * 执行操作("-1"：撤回，"0"：拒绝，"1"：同意（完成），"2"：驳回，"3"：转出)
   */
  status: string
  /**
   * 工作流设置id
   */
  wfs_id: string
  /**
   * {opinion:"",user_ids:[]}
   * 执行意见
   * 用户idList
   */
  json: string
}
/**
 * 未读消息总数或者待办工作总数
 */
export interface InitialParamModel {
  /**
   * 消息未读数量
   */
  unread_msg_count: number
  /**
   * 任务待办数量
   */
  unprocessed_task_count: number
}

//**************************************************传输相关************************************************* */
/**
 *@description  传输文件信息
 */
export interface TransimissionModel {
  id?: React.Key;
  file_name?: string;
  file_type?: string,
  total_size?: string;
  file_size?: number,
  finish_size?: string,
  chunk_size?: number,
  finish_percent?: number,
  progress?: number,
  status?: number,
  action?: string
  file_path?: React.Key
  transfer_type?: string
}

export interface TransimissionOutModel {
  trans_type?: string,
  trans_progress?: string,
  trans_rate?: string,
  trans_total?: number,
  file_list?: TransimissionModel[]
}
export interface IRequestChunkSizeParam extends TransimissionModel {
  /**
   * create_file：文件上传，update_file：历史文件下载
   */
  type: string
  file_id?: React.Key
}
/**
 * @description 新增下载传输任务请求参数
 */
export interface IRequestAddDownTaskParam {
  request_id: string
  /**
   * 普通文件：file，历史文件：history_file
   */
  type: string
}
/**
 * @description 新增下载任务返回模型
 */
export interface IAddDownLoadTaskReponse {
  id: string,
  chunk_size: number,
  chunks: number,
  file_name: string
  file_url: string
  /**
   * 是否使用浏览器原生下载，文件过大
   */
  is_browser_download: boolean
}
export interface IRequestDeleteTransmissionParam {
  type: string,
  file_list: string
}
export interface IRequestActionTransmissionParam {
  type: string,
  file_list: string,
  action: number
}
/**
 * @description 传输文件模型
 */
export interface TransmissonListModel {
  trans_total: number,
  trans_list: TransimissionOutModel[] | []
}
/**
 * @description 传输类型
 */
export enum TransimissonType {

  UpLoad = "upload",
  DownLoad = "download",
  Finish = "finish"

}
/**
 * @description 传输状态
 */
export enum TransmissionStatus {

  Resume = 0,
  Pause = 1
}
/**
 * @description 上传文件分片参数
 */
export interface IPostUploadPartFileParams {
  ft_id: string
  file: string
  chunk_num: number
}
/**
 * @description 请求文件列表参数
 */
export interface IRequestTransmissionParams {
  type: string,
  page: number,
  page_size?: number
}
/**
 * @description 下载分片文件请求参数
 */
export interface IRequestDownLoadPartFileParams {
  /**
   * @description 文件下载地址
   */
  file_url: string,
  /**
   * @description 分片大小
   */
  chunk_size: number,
  /**
   * @description 分片序号
   */
  chunk_sn: number
}
/**
 * @description 文件分片
 */
export interface IPartFile {

  /**
   * 文件唯一标志
   */
  id: string,
  /**
   * 文件分片内容
   */
  file?: ArrayBuffer,
  /**
   * 文件名称
   */
  file_name?: string,
  /**
   * 总分片数
   */
  chunks: number,
  /**
   * 当前分片序号
   */
  chunk_num?: number,
  chunk_sn: number
  chunk_range?: number
  file_size: number
  iscomplete: number
  chunk_content?: ArrayBuffer
  file_status?: number
  user_id?: string
}
export interface IDownLoadPartFile {
  id: string
  ft_id: string
  chunk_sn: number
  chunk_range: number
  chunks: number
  file_name: string,
  iscomplete: number
  file_status?: number
  /**
   * 已下载的文件
   */
  file?: ArrayBuffer[]
  user_id?: string
}